Find all rational solutions of
$$x^2(x+1)(x^2+1)(x-1)=2(y+1)(y-1).$$
Clearly the following six solutions hold:
$$(x,y)=(1,1),(-1,-1),(-1,1),(1,-1),(0,1),(0,-1)$$


But how to find all rational solutions?



Find all rational solutions of $x^2(x+1)(x^2+1)(x-1)=2(y+1)(y-1)$
This is no complete answer yet, but may get expanded to one in due course.


First we search for points on the curve, which is isomorphic to
$$C \colon y^2 = 2(x^6 - x^2 + 2);$$
this produces points with $x \in \{-3, -1, -4/7, 0, 4/7, 1, 3\}$ as already
mentioned in the comments. It was also mentioned that the rank of the
Mordell-Weil group of the Jacobian variety of $C$ is 3, so that we cannot
apply Chabauty's method directly. What we can try to do is to use a
covering collection plus Elliptic Curve Chabauty.


Let $K = \mathbb Q(a)$ with $a^3 - a + 2 = 0$; then
$$2(x^6 - x^2 + 2) = 2 (x^2 - a) (x^4 + a x^2 + a^2 - 1).$$
We can compute the 2-Selmer set of $C$ and find that it has three
elements that are all images of known rational points on $C$.
If my quick computation is correct, then we obtain two coverings of $C$
of the form
$$D\_j \colon u^2 = \delta\_j (x^2 - a), \quad
 v^2 = 2 \delta\_j (x^4 + a x^2 + a^2 - 1)$$
with $\delta\_1 = 1 - a$ and $\delta\_2 = -a$, such that each rational
point on $C$ lifts to a $K$-point on $D\_1$ or $D\_2$ (with the same
$x$-coordinate). Forgetting the first
equation, we get morphisms $D\_j \to E\_j$, where $E\_j$ is an elliptic
curve given by the second equation. We are interested in points in $E\_j(K)$
whose $x$-coordinate is in $\mathbb Q$; this is the setting for 
Elliptic Curve Chabauty. According to Magma, the Mordell-Weil ranks
of $E\_1$ and $E\_2$ over $K$ are 2 and 1, so the relevant Chabauty
condition (rank is smaller than degree of $K$) is satisfied.
It remains to actually do the computation, which right now I have no
time to do. Almost certainly the result will be that $C$ only has the
known rational points.


**EDIT:** I have now done the computation (with Magma), and the result
is as expected: the rational points on $C$ lifting to a $K$-rational
point on $D\_1$ have $x$-coordinate in $\{-3, -1, 1, 3\}$ and the
rational points on $C$ lifting to a $K$-rational point on $D\_2$ have
$x$-coordinate in $\{-4/7, 0, 4/7\}$. So there are no unknown rational
points on $C$.


Here is Magma code for the computations (it can be run in the
[Magma online calculator](http://magma.maths.usyd.edu.au/calc/)):



```
P<x> := PolynomialRing(Rationals());
f := x^2*(x+1)*(x^2+1)*(x-1) + 2;
C := HyperellipticCurve(2*f);
K<a> := NumberField(x^3-x+2);
f1 := ExactQuotient(PolynomialRing(K)!f, Polynomial([-a, 0, 1]));
// compute 2-Selmer set of C
deltas, m := TwoCoverDescent(C);
A<th> := Domain(m);
// find the possible square classes of x(P)^2 - a in K, for P in C(Q)
invol := hom<A -> A | -th>;
ndeltas := [d*invol(d) where d := dd @@ m : dd in deltas];
assert Set(ndeltas) eq {1-th^2, -th^2}; // note that a = th^2, so this is {1-a, -a}
// set up the two elliptic quotients as hyperelliptic curves
D1 := HyperellipticCurve(2*(1-a)*f1);
D2 := HyperellipticCurve(2*(-a)*f1);
// find isomorphic elliptic curve, given by integral Weierstrass model
E1, D1toE1 := EllipticCurve(D1, Points(D1, 1)[1]);
E1i, toE1i := IntegralModel(E1);
// determine E1(K)
MWE1, mMWE1 := MordellWeilGroup(E1i);
P1 := ProjectiveSpace(Rationals(), 1);
// set up x-coordinate map in terms of E1i
E1itoP1 := Expand(Inverse(toE1i)*Inverse(D1toE1)*map<D1 -> P1 | [D1.1, D1.3]>);
// run Elliptic Curve Chabauty
ptsMWE1, N1 := Chabauty(map<MWE1 -> E1i | a :-> &+[Eltseq(a)[i]*mMWE1(MWE1.i) : i in [1..Ngens(MWE1)]]>, E1itoP1);
// make sure known subgroup of E1(K) is saturated at the primes dividing N1
newgens := Saturation([mMWE1(g) : g in OrderedGenerators(MWE1)], Max(PrimeDivisors(N1)));
assert newgens eq [mMWE1(g) : g in OrderedGenerators(MWE1)];
// find the x-coordinates of the points
{E1itoP1(mMWE1(pt)) : pt in ptsMWE1};
// ==> { (3 : 1), (1 : 1), (-1 : 1), (-3 : 1) }
// do the same for the other covering curve
E2 := EllipticCurve(D2, Points(D2, 0)[1]);
E2, D2toE2 := EllipticCurve(D2, Points(D2, 0)[1]);
E2i, toE2i := IntegralModel(E2);
E2itoP1 := Expand(Inverse(toE2i)*Inverse(D2toE2)*map<D2 -> P1 | [D2.1, D2.3]>);
MWE2, mMWE2 := MordellWeilGroup(E2i);
ptsMWE2, N2 := Chabauty(map<MWE2 -> E2i | a :-> &+[Eltseq(a)[i]*mMWE2(MWE2.i) : i in [1..Ngens(MWE2)]]>, E2itoP1);
newgens := Saturation([mMWE2(g) : g in OrderedGenerators(MWE2)], Max(PrimeDivisors(N2)));
assert newgens eq [mMWE2(g) : g in OrderedGenerators(MWE2)];
{E2itoP1(mMWE2(pt)) : pt in ptsMWE2};
// ==> { (0 : 1), (4/7 : 1), (-4/7 : 1) }

```

